| Matching Statements |
| File1 Line# |
File2 Line# |
Statement |
| 1 | 1 | PIPMOD: |
| 8 | 8 | DECLARE COPYRIGHT(*) BYTE DATA ( |
| 11 | 11 | DECLARE INPLOC ADDRESS DATA (183H) |
| 12 | 12 | DECLARE OUTLOC ADDRESS DATA (106H) |
| 14 | 14 | OUT: PROCEDURE (B) |
15 466 530 538 | 15 466 530 538 | DECLARE B BYTE |
| 17 | 17 | CALL OUTLOC |
| 18 | 18 | END OUT |
| 20 | 20 | INP: PROCEDURE BYTE |
| 21 | 21 | CALL INPLOC |
23 123 | 23 123 | RETURN 0 |
| 24 | 24 | END INP |
| 26 | 26 | TIMEOUT: PROCEDURE |
28 28 | 28 28 | CALL TIME(250) |
| 29 | 29 | END TIMEOUT |
| 33 | 33 | LIT LITERALLY , |
| 34 | 34 | ENDFILE LIT , |
| 35 | 35 | TAB LIT , |
| 36 | 36 | LA LIT , |
| 37 | 37 | LB LIT , |
| 38 | 38 | RB LIT , |
| 39 | 39 | XOFF LIT , |
| 41 | 41 | RDR LIT , |
| 42 | 42 | LST LIT , |
| 43 | 43 | PUMP LIT , |
| 44 | 44 | CONP LIT , |
| 45 | 45 | NULP LIT , |
| 46 | 46 | EOFP LIT , |
| 47 | 47 | HSRDR LIT , |
| 48 | 48 | PRNT LIT , |
| 50 | 50 | FSIZE LIT , |
| 51 | 51 | NSIZE LIT , |
| 52 | 52 | FNSIZE LIT , |
| 53 | 53 | MDISK LIT , |
| 54 | 54 | FNAM LIT , |
| 55 | 55 | FEXT LIT , |
| 56 | 56 | FEXTL LIT , |
| 57 | 57 | FREEL LIT , |
| 58 | 58 | HBUFS LIT , |
| 60 | 60 | ERR LIT , |
| 61 | 61 | SPECL LIT , |
| 62 | 62 | FILE LIT , |
| 63 | 63 | PERIPH LIT , |
| 64 | 64 | DISK NAME LIT |
| 67 | 67 | EXIT ADDRESS INITIAL(0H), |
| 68 | 68 | COLUMN BYTE, |
| 69 | 69 | AMBIG BYTE, |
| 70 | 70 | PARSET BYTE, |
| 71 | 71 | FEEDBASE BYTE, |
| 72 | 72 | FEEDLEN BYTE, |
| 73 | 73 | MATCHLEN BYTE, |
| 74 | 74 | QUITLEN BYTE, |
| 75 | 75 | NBUF BYTE, |
| 76 | 76 | CDISK BYTE, |
| 77 | 77 | BUFFER (128) BYTE AT (8BH), |
| 78 | 78 | SEARFCB (FSIZE) BYTE AT (5CH), |
| 79 | 79 | MEMSIZE ADDRESS AT (6H), |
| 80 | 80 | SBLEN ADDRESS, |
| 81 | 81 | DBLEN ADDRESS, |
| 82 | 82 | SBASE ADDRESS, |
| 85 | 85 | DBUFF (1024) BYTE AT (.MEMORY), |
| 86 | 86 | SBUFF BASED SBASE (1024) BYTE, |
| 87 | 87 | SDISK BYTE, |
| 88 | 88 | (SCOM, DHEX) BYTE, |
| 90 | 90 | SOURCE (FSIZE) BYTE, |
| 91 | 91 | DEST (FSIZE) BYTE, |
| 92 | 92 | DDISK BYTE, |
| 93 | 93 | HBUFF(HBUFS) BYTE, |
| 94 | 94 | HSOURCE BYTE, |
| 96 | 96 | NSOURCE ADDRESS, |
| 97 | 97 | HARDEOF ADDRESS, |
| 98 | 98 | NDEST ADDRESS |
| 101 | 101 | PDEST BYTE, |
| 102 | 102 | PSOURCE BYTE |
| 105 | 105 | MULTCOM BYTE, |
| 106 | 106 | PUTNUM BYTE, |
| 107 | 107 | CONCNT BYTE, |
| 108 | 108 | CHAR BYTE, |
| 109 | 109 | TYPE BYTE, |
| 110 | 110 | FLEN BYTE |
| 112 | 112 | $INCLUDE (:F1:CPIO.PLB) |
| 113 | 113 | MON1: PROCEDURE(F,A) |
114 120 | 114 120 | DECLARE F BYTE, |
115 121 | 115 121 | A ADDRESS |
| 116 | 116 | L1: GO TO L1 |
| 117 | 117 | END MON1 |
| 119 | 119 | MON2: PROCEDURE(F,A) BYTE |
| 122 | 122 | L2: GO TO L2 |
| 124 | 124 | END MON2 |
| 126 | 126 | READRDR: PROCEDURE BYTE |
| 128 | 128 | RETURN MON2(3,0) |
| 129 | 129 | END READRDR |
| 131 | 131 | READCHAR: PROCEDURE BYTE |
| 133 | 133 | RETURN MON2(1,8) |
| 134 | 134 | END READCHAR |
| 137 | 137 | TRUE LITERALLY , |
| 138 | 138 | FALSE LITERALLY , |
| 139 | 139 | FOREVER LITERALLY , |
| 140 | 140 | CR LITERALLY , |
| 141 | 141 | LF LITERALLY , |
| 142 | 142 | WHAT LITERALLY |
| 144 | 144 | PRINTCHAR: PROCEDURE (CHAR) |
145 641 | 145 641 | DECLARE CHAR BYTE |
| 146 | 146 | CALL MON1(2,CHAR) |
| 147 | 147 | END PRINTCHAR |
| 149 | 149 | CRLF: PROCEDURE |
| 150 | 150 | CALL PRINTCMAR(CR) |
| 151 | 151 | CALL PRINTCHAR(LF) |
| 152 | 152 | END CRLF |
| 154 | 154 | PRINT: PROCEDURE(A) |
155 264 889 924 | 155 264 889 924 | DECLARE A ADDRESS |
158 302 1037 1040 1171 1192 1256 | 158 302 1037 1040 1171 1192 1256 | CALL CRLF |
| 159 | 159 | CALL MON1(9,A) |
| 160 | 160 | END PRINT |
| 162 | 162 | DECLARE DCNT BYTE |
| 164 | 164 | INITIALIZE: PROCEDURE |
| 165 | 165 | CALL MON1(13,0) |
| 166 | 166 | END INITIALIZE |
| 168 | 168 | SELECT: PROCEDURE(D) |
169 472 | 169 472 | DECLARE D BYTE |
| 170 | 170 | CALL MON1(14,D) |
| 171 | 171 | END SELECT |
| 173 | 173 | OPEN: PROCEDURE(FCB) |
174 179 184 193 198 203 208 213 | 174 179 184 193 198 203 208 213 | DECLARE FCB ADDRESS |
| 175 | 175 | DCNT = MON2(15,FCB) |
| 176 | 176 | END OPEN |
| 178 | 178 | CLOSE: PROCEDURE(FCB) |
| 180 | 180 | DCNT = MON2(16,FCB) |
| 181 | 181 | END CLOSE |
| 183 | 183 | SEARCH: PROCEDURE(FCB) |
| 185 | 185 | DCNT = MON2(17,FCB) |
| 186 | 186 | END SEARCH |
| 188 | 188 | SEARCHN: PROCEDURE |
| 189 | 189 | DCNT = MON2(18,0) |
| 190 | 190 | END SEARCHN |
| 192 | 192 | DELETE: PROCEDURE(FCB) |
| 194 | 194 | CALL MON1(19,FCB) |
| 195 | 195 | END DELETE |
| 197 | 197 | DISKREAD: PROCEDURE(FCB) BYTE |
| 199 | 199 | RETURN MON2(20,FCB) |
| 200 | 200 | END DISKREAD |
| 202 | 202 | DISKWRITE: PROCEDURE(FCB) BYTE |
| 204 | 204 | RETURN MON2(21,FCB) |
| 205 | 205 | END DISKWRITE |
| 207 | 207 | MAKE: PROCEDURE(FCB) |
| 209 | 209 | DCNT = MON2(22,FCB) |
| 210 | 210 | END MAKE |
| 212 | 212 | RENAME: PROCEDURE(FCB) |
| 214 | 214 | CALL MON1(23,FCB) |
| 215 | 215 | END RENAME |
| 217 | 217 | DECLARE CBUFF(130) BYTE, |
| 218 | 218 | MAXLEN BYTE AT (.CBUFF(0)), |
| 219 | 219 | COMLEN BYTE AT (.CBUFF(1)), |
| 220 | 220 | COMBUFF (128) BYTE AT (.CBUFF(2)), |
| 221 | 221 | DECLARE (TCBP,CBP) BYTE |
| 223 | 223 | READCOM: PROCEDURE |
| 225 | 225 | MAXLEN = 128 |
| 226 | 226 | CALL MON1(10, MAXLEN) |
| 227 | 227 | END READCOM |
| 229 | 229 | DECLARE MCBP BYTE |
| 231 | 231 | CONBRK: PROCEDURE BYTE |
| 233 | 233 | RETURN MON2(11,0) |
| 234 | 234 | END CONBRK |
| 236 | 236 | DECLARE IOBYTE BYTE AT (3H) |
| 239 | 239 | CONT(26) BYTE, |
| 244 | 244 | BLOCK BYTE AT(.CONT(1)), |
| 245 | 245 | DELET BYTE AT(.CONT(3)), |
| 246 | 246 | ECHO BYTE AT(.CONT(4)), |
| 247 | 247 | NEXT BYTE AT(.CONT(7)), |
| 248 | 248 | IGNOR BYTE AT(.CONT(8)), |
| 249 | 249 | LOWER BYTE AT(.CONT(11)), |
| 250 | 250 | NUMB BYTE AT(.CONT(13)), |
| 251 | 251 | OBJ BYTE AT(.CONT(14)), |
| 252 | 252 | QUITS BYTE AT(.CONT(16)), |
| 253 | 253 | STARTS BYTE AT(.CONT(18)), |
| 254 | 254 | TABS BYTE AT(.CONT(19)), |
| 255 | 255 | UPPER BYTE AT(.CONT(20)), |
| 256 | 256 | VERIF BYTE AT(.CONT(21)), |
| 257 | 257 | ZEROP BYTE AT(.CONT(25)) |
| 259 | 259 | LIFTHEAD: PROCEDURE |
| 260 | 260 | CALL MON1(12,B) |
| 261 | 261 | END LIFTHEAD |
| 263 | 263 | SETDMA: PROCEDURE(A) |
| 265 | 265 | CALL MON1(26,A) |
| 266 | 266 | END SETDMA |
| 270 | 270 | INTIN: PROCEDURE BYTE |
| 272 | 272 | DECLARE PTRI LITERALLY , |
| 273 | 273 | PTRS LITERALLY , |
| 274 | 274 | PTRC LITERALLY , |
| 276 | 276 | PTRG LITERALLY , |
| 277 | 277 | PTPH LITERALLY |
| 280 | 280 | OUTPUT(PTRC) = PTRG |
| 281 | 281 | OUTPUT(PTRC) = PTRH |
| 282 | 282 | DO WHILE NOT ROL(INPUT(PTRS),3) |
| 285 | 285 | RETURN INPUT(PTRI) AND 7FH |
| 286 | 286 | END INTIN |
| 288 | 288 | DECLARE ZEROSUP BYTE |
| 289 | 289 | (C3,C2,C1) BYTE |
| 291 | 291 | ERROR: PROCEDURE(A) |
| 292 | 292 | DECLARE A ADDRESS, I BYTE |
293 927 | 293 927 | CALL PRINT(A) |
293 293 1255 | 293 293 1255 | CALL PRINTCHAR( ) |
| 294 | 294 | DO I = TCBP TO CBP |
| 295 | 295 | IF I < COMLEN THEN CALL PRINTCHAR(COMBUFF(I)) |
| 299 | 299 | COMLEN = 0 |
| 301 | 301 | CALL DELETE(.(0, ,0)) |
| 303 | 303 | GO TO RETRY |
| 304 | 304 | END ERROR |
| 306 | 306 | MOVE: PROCEDURE(S,D,N) |
| 307 | 307 | DECLARE (S,D ) ADDRESS, N BYTE |
| 308 | 308 | DECLARE A BASED S BYTE, B BASED D BYTE |
| 309 | 309 | DO WHILE (N:=N-1) <> 255 |
| 310 | 310 | B = A |
| 310 | 310 | S = S+1 |
| 310 | 310 | D = D+1 |
| 312 | 312 | END MOVE |
| 314 | 314 | FILLSOURCE: PROCEDURE |
316 732 | 316 732 | DECLARE (I,J) BYTE |
317 331 | 317 331 | NSOURCE = 0 |
318 1061 1183 | 318 1061 1183 | CALL SELECT(SDISK) |
| 319 | 319 | DO I = 0 TO NBUF |
| 321 | 321 | CALL SETDMA(.SBUFF(NSOURCE)) |
| 322 | 322 | IF (J := DISKREAD(.SOURCE)) <> 0 THEN |
| 323 | 323 | IF J <> I THEN |
324 355 383 422 598 629 739 1046 1073 1075 1192 1311 1328 1343 1364 | 324 355 383 422 598 629 739 1046 1073 1075 1192 1311 1328 1343 1364 | CALL ERROR(.( )) |
| 326 | 326 | HARDEOF = NSOURCE |
| 327 | 327 | SBUFF(NSOURCE) = ENDFILE |
| 327 | 327 | I = NBUF |
| 329 | 329 | NSOURCE = NSOURCE + 128 |
| 332 | 332 | END FILLSOURCE |
| 334 | 334 | WRITEDEST: PROCEDURE |
| 337 | 337 | DECLARE (I, J, N) BYTE |
| 338 | 338 | DECLARE DMA ADDRESS |
| 339 | 339 | DECLARE (EXTCNT, DATAOK) BYTE |
| 340 | 340 | IF (N := LOW(SHR(NDEST,7)) - 1) = 255 THEN RETURN |
| 341 | 341 | EXTCNT,NDEST = 0 |
342 1050 1085 | 342 1050 1085 | CALL SELECT(DDISK) |
| 343 | 343 | DO I = 0 TO N |
| 345 | 345 | DMA = .DBUFF(NDEST) |
346 358 | 346 358 | IF VERIF THEN |
| 348 | 348 | IF DEST(32) = 127 THEN |
| 349 | 349 | CALL MOVE(DMA,80H,80H) |
| 350 | 350 | DMA = 80H |
| 350 | 350 | EXTCNT = EXTCNT + 1 |
| 353 | 353 | CALL SETDMA(DMA) |
| 354 | 354 | IF DISKWRITE(.DEST) <> 0 THEN |
| 356 | 356 | NDEST + NDEST + 128 |
| 359 | 359 | I = N + 1 |
360 390 | 360 390 | NDEST = 0 |
| 361 | 361 | IF EXTCNT <> 0 THEN |
362 372 | 362 372 | CALL SETDMA(80H) |
362 1086 | 362 1086 | CALL CLOSE(.DEST) |
| 363 | 363 | DEST(FREEL) = DEST(FREEL) - EXTCNT |
| 364 | 364 | J = DEST(32) |
365 387 | 365 387 | CALL OPEN (.DEST) |
| 367 | 367 | 1 = 1 - 128 |
| 369 | 369 | DEST (32) = (J - I) AND 7FH |
| 371 | 371 | DEST(32) = DEST (32) - 1 |
| 373 | 373 | DO 1 - 0 TO N |
| 374 | 374 | DATAOK = DISKREAD(.DEST) = 0 |
| 375 | 375 | J = 0 |
| 377 | 377 | DO WHILE DATAOK AND J < 80H |
| 378 | 378 | DATAOK = BUFFER(J) = DBUFF(NDEST+J) |
| 379 | 379 | J = J + 1 |
| 381 | 381 | NDEST = NDEST + 128 |
| 382 | 382 | IF NOT DATAOK THEN |
| 385 | 385 | IF DEST(32) = 128 |
| 386 | 386 | DEST(FREEL) = DEST(FREEL) + 1 |
| 391 | 391 | END WRITEDEST |
| 393 | 393 | PUTDESTC: PROCEDURE(B) |
| 394 | 394 | DECLARE (B,IOB) BYTE |
| 396 | 396 | IF B >= THEN |
| 397 | 397 | COLUMN = COLUMN + 1 |
| 398 | 398 | IF DELET > 0 THEN |
| 399 | 399 | IF COLUMN > DELET THEN RETURN |
402 557 | 402 557 | IOB = IOBYTE |
| 403 | 403 | DO CASE PDEST |
| 406 | 406 | IF NDEST >= DBLEN THEN CALL WRITEDEST |
| 407 | 407 | DBUFF(NDEST) = B |
| 408 | 408 | HDEST = NDEST + 1 |
411 413 415 417 419 | 411 413 415 417 419 | GO TO NOTDEST |
| 421 | 421 | NOTDEST |
| 424 | 424 | CALL OUT(B) |
426 432 | 426 432 | IOBYTE = 1000$0000B |
426 429 432 | 426 429 432 | GO TO LSTL |
| 429 | 429 | IOBYTE = 1100$0000B |
| 435 | 435 | LSTL: |
| 436 | 436 | CALL MON1(5,B) |
| 438 | 438 | IOBYTE = 0001$0000B |
438 441 444 | 438 441 444 | GO TO PUNL |
| 441 | 441 | IOBYTE = 0010$0000B |
| 444 | 444 | IOBYTE = 0011$0000B |
| 447 | 447 | PUNL: |
| 448 | 448 | CALL MON1(4,B) |
450 601 | 450 601 | IOBYTE = 0 |
450 453 456 601 604 607 | 450 453 456 601 604 607 | GO TO CONL |
| 453 | 453 | IOBYTE = 1 |
456 607 | 456 607 | IOBYTE = 11B |
459 610 | 459 610 | CONL: |
| 460 | 460 | CALL MON1(2,B) |
462 615 | 462 615 | IOBYTE = IOB |
| 463 | 463 | END PUTDESTC |
| 465 | 465 | PRINT1: PROCEDURE(B) |
| 467 | 467 | IF (ZEROSUP = ZEROSUP AND B = 0) THEN CALL PUTDESTC( ) |
| 468 | 468 | CALL PUTDESTC( + B) |
| 469 | 469 | END PRINT1 |
| 471 | 471 | PRINTDIG: PROCEDURE(D) |
| 473 | 473 | CALL PRINT1(SHR(D,4)) |
| 473 | 473 | CALL PRINT1(D AND 1111B) |
| 474 | 474 | END PRINTDIG |
| 476 | 476 | NEWLINE: PROCEDURE |
| 477 | 477 | ZEROSUP = 1 |
| 478 | 478 | C1 = DEC(C1+ZEROSUP) |
| 478 | 478 | C2 = DEC(C2 PLUS 0) |
| 478 | 478 | C3 = DEC(C3 PLUS 0) |
| 479 | 479 | CALL PRINTDIG(C3) |
| 479 | 479 | CALL PRINTDIG(C2) |
| 479 | 479 | CALL PRINTDIG(C1) |
480 516 | 480 516 | CALL PUTDESTC( ) |
| 481 | 481 | PUTNUM = FALSE |
| 482 | 482 | END NEWLINE |
| 484 | 484 | CLEARBUFF PROCEDURE |
| 486 | 486 | DECLARE HA ADDRESS |
487 727 940 | 487 727 940 | DECLARE I BYTE |
| 488 | 488 | I = LOW(NDEST) AHD 7FH |
| 489 | 489 | HA = NDEST AND 0FF80H |
490 1084 1159 | 490 1084 1159 | CALL WRITEDEST |
| 491 | 491 | CALL MOVE(.DBUFF(NA),.DBUFF,I) |
| 493 | 493 | NDEST = I |
| 494 | 494 | END CLEARBUFF |
| 496 | 496 | PUTDEST: PROCEDURE(B) |
| 497 | 497 | DECLARE (I,B) BYTE |
| 499 | 499 | IF NUMB AND PUTNUM THEN CALL NEWLINE |
| 500 | 500 | IF BLOCK THEN |
| 502 | 502 | IF B = XOFF AND PDEST = 0 THEN |
503 934 1128 | 503 934 1128 | CALL CLEARBUFF |
| 507 | 507 | IF B = TAB THEN |
| 508 | 508 | IF TABS > 0 THEN |
| 509 | 509 | I = COLUMN |
| 510 | 510 | IF NUMB THEN I = I - 7 |
| 511 | 511 | DO WHILE I >= TABS |
| 512 | 512 | I = I - TABS |
| 514 | 514 | I = TABS - I |
| 515 | 515 | DO WHILE I > 0 |
| 516 | 516 | I = I - I |
| 519 | 519 | ELSE CALL PUTDESTC(B) |
| 522 | 522 | CALL PUTDESTC(B) |
| 523 | 523 | IF B = CR THEN COLUMN = 0 |
| 525 | 525 | PUTNUM = B = LF |
| 527 | 527 | END PUTDEST |
| 529 | 529 | UTRAN: PROCEDURE(B) BYTE |
| 532 | 532 | IF B >= 110$0001B AND B <= 111$1010B THEN |
| 533 | 533 | B = B AND 101$1111B |
534 541 636 | 534 541 636 | RETURN B |
| 535 | 535 | END UTRAN |
| 537 | 537 | LTRAN: PROCEDURE(B) BYTE |
| 540 | 540 | IF B >= AND B <= THEN B = B OR 10$0000B |
| 542 | 542 | END LTRAN |
| 544 | 544 | GETSOURCEC: PROCEDURE BYTE |
| 546 | 546 | DECLARE (IOB,B,CONCHK) BYTE |
| 548 | 548 | IF PSOURCE - 1 <= RDR THEN |
| 549 | 549 | IF (BLOCK OR NEXT) AND CONBRK THEN |
551 628 | 551 628 | IF READCHAR = ENDFILE THEN RETURN ENDFILE |
| 552 | 552 | CALL PRINT(.( ,CR,LF, )) |
| 553 | 553 | RETURN XOFF |
| 556 | 556 | CONCHK = TRUE |
| 558 | 558 | DO CASE PSOURCE |
| 560 | 560 | IF NSOURCE >= SBLEN THEN CALL FILLSOURCE |
| 561 | 561 | B = SBUFF(NSOURCE) |
| 562 | 562 | NSOURCE = NSOURCE + 1 |
| 565 | 565 | B = INP |
| 567 | 567 | B = INTIN |
| 569 | 569 | IOBYTE = 0000$0100B |
569 572 575 | 569 572 575 | GO TO RDRL |
| 572 | 572 | IOBYTE = 0000$1000B |
| 575 | 575 | IOBYTE = 0000*1100B |
| 578 | 578 | RDRL: |
| 579 | 579 | B = MON 2(3,0) AND 7FH |
581 583 585 587 589 591 595 | 581 583 585 587 589 591 595 | GO TO NOTSOURCE |
| 597 | 597 | NOTSOURCE: |
| 604 | 604 | IOBYTE = 01B |
| 611 | 611 | CONCHK = FALSE |
| 612 | 612 | B = MON2(1,0) |
| 616 | 616 | IF ECHO THEN |
| 617 | 617 | IOB = PDEST |
| 617 | 617 | PDEST = CONP |
| 617 | 617 | CALL PUTDEST(B) |
| 618 | 618 | PDEST = IOB |
620 625 | 620 625 | IF CONCHK THEN |
| 622 | 622 | IF SCOM THEN |
| 623 | 623 | CONCHK = (CONCNT:= CONCNT + 1) = 0 |
| 624 | 624 | CONCHK = B = LF |
| 626 | 626 | IF CONBRK THEN |
| 633 | 633 | IF ZEROP THEN B = B AND 7FH |
| 634 | 634 | IF UPPER THEN RETURN UTRAN(B) |
| 635 | 635 | IF LOWER THEN RETURN LTRAN(B) |
| 637 | 637 | END GETSOURCEC |
| 639 | 639 | GETSOURCE: PROCEDURE BYTE |
| 642 | 642 | MATCH: PROCEDURE(B) BYTE |
| 644 | 644 | DECLARE (B,C) BYTE |
| 645 | 645 | IF (C:=COMBUFF(B:=(B+MATCHLEN))) = ENDFILE THEN |
| 646 | 646 | COMBUFF(B) = CHAR |
647 903 | 647 903 | RETURN TRUE |
| 649 | 649 | IF C = CHAR THEN MATCHLEN = MATCHLEN + 1 |
| 650 | 650 | MATCHLEN = 0 |
651 709 | 651 709 | RETURN FALSE |
| 652 | 652 | END MATCH |
| 653 | 653 | IF QUITLEN > 0 THEN |
| 654 | 654 | IF (QUITLEN := QUITLEN - 1) = 1 THEN RETURN LF |
655 950 | 655 950 | RETURN ENDFILE |
657 792 1027 1181 1250 | 657 792 1027 1181 1250 | DO FOREVER |
| 658 | 658 | IF FEEDLEN > 0 THEN |
| 659 | 659 | FEEDLEN = FEEDLEN - 1 |
| 660 | 660 | CHAR = COMBUFF(FEEDBASE) |
| 661 | 661 | FEEDBASE = FEEDBASE + 1 |
662 677 679 | 662 677 679 | RETURN CHAR |
| 664 | 664 | IF (CHAR = GETSOURCEC) = ENDFILE THEN RETURN ENDFILE |
665 1072 | 665 1072 | IF STARTS > 0 THEN |
| 666 | 666 | IF MATCH(STARTS) THEN |
| 667 | 667 | FEEDBASE = STARTS |
| 667 | 667 | STARTS = 0 |
| 668 | 668 | FEEDLEN = MATCHLEN + 1 |
671 1074 | 671 1074 | IF QUITS > 0 THEN |
| 672 | 672 | IF MATCH(QUITS) THEN |
| 673 | 673 | QUITS = 0 |
| 673 | 673 | QUITLEN = 2 |
| 675 | 675 | RETURN CR |
| 681 | 681 | END GETSOURCE |
| 683 | 683 | DECLARE DISK BYTE |
| 684 | 684 | GNC: PROCEDURE BYTE |
| 685 | 685 | IF (CBP := CBP + I) >+ COMLEN THEN RETURN CR |
| 686 | 686 | RETURN UTRAN(COMBUFF(CBP)) |
| 687 | 687 | END GNC |
| 689 | 689 | DEBLANK: PROCEDURE |
| 690 | 690 | DO WHILE (CHAR := GNC) = |
| 692 | 692 | END DEBLANK |
| 694 | 694 | SCAN: PROCEDURE (FCBA) |
| 695 | 695 | DECLARE FCBA ADDRESS, |
| 696 | 696 | FCB BASED FCBA (FSIZE) BYTE |
| 697 | 697 | DECLARE (I,J,K) BYTE |
| 702 | 702 | DELIMITER: PROCEDURE(C) BYTE |
703 1170 | 703 1170 | DECLARE (I,C) BYTE |
| 704 | 704 | DECLARE DEL(*) BYTE DATA |
| 705 | 705 | ( ,CR,LA,LB,RB) |
| 706 | 706 | DO I = 0 TO LAST(DEL) |
| 707 | 707 | IF C = DEL(I) THEN RETURN TRUE |
| 710 | 710 | END DELIMITER |
| 712 | 712 | PUTCHAR: PROCEDURE |
| 713 | 713 | FCB(FLEN:=FLEN+1) = CHAR |
| 714 | 714 | IF CHAR = WHAT THEN AMBIG = TRUE |
| 715 | 715 | END PUTCHAR |
| 717 | 717 | FILLQ: PROCEDURE(LEN) |
| 719 | 719 | DECLARE LEN BYTE |
| 720 | 720 | CHAR = WHAT |
| 721 | 721 | DO WHILE FLEN < LEN |
722 768 | 722 768 | CALL PUTCHAR |
| 724 | 724 | END FILLQ |
| 726 | 726 | GETFCB: PROCEDURE(I) BYTE |
| 728 | 728 | RETURN FCB(I) |
| 729 | 729 | END GETFCB |
| 731 | 731 | SCANPAR: PROCEDURE |
| 734 | 734 | PARSET = TRUE |
735 747 757 798 | 735 747 757 798 | CHAR = GNC |
| 736 | 736 | DO WHILE NOT(CHAR = CR OR CHAR = RB) |
| 737 | 737 | IF (I := CHAR - ) > 25 THEN |
| 738 | 738 | IF CHAR = THEN CHAR = GNC |
| 742 | 742 | IF CHAR = OR CHAR = THEN |
| 744 | 744 | J = CBP + 1 |
| 745 | 745 | DO WHILE NOT ((CHAR := GNC) = ENDFILE OR CHAR = CR) |
| 749 | 749 | IF (J := (CHAR := GNC) - ) > 9 THEN J = I |
| 751 | 751 | DO WHILE (K := (CHAR := GNC) - ) <= 9 |
| 752 | 752 | J = J + 10 + K |
| 754 | 754 | CONT (I) = J |
| 758 | 758 | END SCANPAR |
| 760 | 760 | CHKSET: PROCEDURE |
| 761 | 761 | IF CHAR = LA THEN CHAR = |
| 762 | 762 | END CHKSET |
| 765 | 765 | AMBIG = FALSE |
| 765 | 765 | TYPE = ERR |
| 765 | 765 | CHAR = FLEN = 0 |
| 766 | 766 | DO WHILE FLEN < FSIZE-1 |
| 767 | 767 | IF FLEN = FNSIZE THEN CHAR = 0 |
772 809 1220 1299 | 772 809 1220 1299 | CALL DEBLANK |
| 775 | 775 | TCBP = CBP |
778 810 | 778 810 | IF DELIMITER(CHAR) THEN |
| 779 | 779 | CALL CHKSET |
| 780 | 780 | TYPE = SPECL |
| 784 | 784 | DISK = 0 |
786 1145 | 786 1145 | DO I = 0 TO 25 |
| 786 | 786 | CONT(I) = 0 |
| 789 | 789 | PARSET = FALSE |
| 790 | 790 | FEEDLEN,MATCHLEN,QUITLEN = 0 |
| 793 | 793 | FLEN = 0 |
| 794 | 794 | DO WHILE NOT DELIMITER(CHAR) |
| 795 | 795 | IF FLEN >= NSIZE THEN |
| 797 | 797 | IF CHAR = THEN CALL FILLQ(NSIZE) |
797 864 | 797 864 | ELSE CALL PUTCHAR |
| 802 | 802 | IF CHAR = THEN |
| 803 | 803 | IF DISK <> 0 THEN RETURN |
| 804 | 804 | IF FLEN = 1 THEN |
| 807 | 807 | IF (DISK := GETFCB(1) - + 1> >26 THEN |
| 811 | 811 | IF CHAR = LB THEN CALL |
| 812 | 812 | SCANPAR |
813 843 869 | 813 843 869 | CBP = CBP - 1 |
| 814 | 814 | TYPE = DISKNAME |
| 820 | 820 | IF FLEN <> 3 THEN |
| 824 | 824 | DECLARE (I,J,K) BYTE, M LITERALLY , |
| 825 | 825 | IO(*) BYTE DATA |
| 827 | 827 | ,0) |
| 833 | 833 | J = 255 |
| 834 | 834 | DO K = 0 TO M |
| 835 | 835 | I = 0 |
| 836 | 836 | DO WHILE ((I:=I+1) <= 3) AND |
| 837 | 837 | IO(J+I) = GETFCB(I) |
| 839 | 839 | IF I = 4 THEN |
| 840 | 840 | TYPE = PERIPH |
| 842 | 842 | IF GNC = LB THEN CALL SCANPAR |
| 843 | 843 | CHAR = K |
| 846 | 846 | J = J + 3 |
851 866 | 851 866 | IF CHAR = LB THEN |
852 867 | 852 867 | CALL SCANPAR |
| 856 | 856 | IF FLEN = 0 THEN |
| 858 | 858 | FLEN = FNAM |
| 859 | 859 | IF CHAR = THEN SCAN FILE TYPE */ |
| 860 | 860 | DO WHILE NOT DELIMITER(CHAR := GNC) |
| 861 | 861 | IF FLEN >= FNSIZE THEN |
| 863 | 863 | IF CHAR = THEN CALL FILLQ(FNSIZE) |
| 870 | 870 | TYPE - FILE |
| 872 | 872 | IF DISK = 0 THEN DISK = CDISK + l |
| 873 | 873 | FCB(0), FCB(32) = 0 |
| 877 | 877 | END SCAN |
| 879 | 879 | NULLS: PROCEDURE |
| 881 | 881 | DECLARE 1 BYTE |
| 882 | 882 | DO I = 0 TO 39 |
| 882 | 882 | CALL PUTDEST(0) |
| 884 | 884 | END NULLS |
| 886 | 886 | DECLARE FEXTH(FEXTL) BYTE, |
| 887 | 887 | COPYING BYTE |
| 888 | 888 | MOVEXT: PROCEDURE(A) |
| 891 | 891 | CALL MOVE(A,.DEST(FEXT),FEXTL) |
| 892 | 892 | END MOVEXT |
| 894 | 894 | EQUAL: PROCEDURE(A,B) BYTE |
| 897 | 897 | DECLARE (A,B) ADDRESS, |
| 898 | 898 | (SA BASED A, SB BASED B) BYTE |
| 899 | 899 | DO WHILE SB <> |
| 900 | 900 | IF SB <> SA THEN RETURN FALSE |
| 901 | 901 | A = A + 1 |
| 901 | 901 | B = B + 1 |
| 904 | 904 | END EQUAL |
| 906 | 906 | READ$EOF: PROCEDURE BYTE |
| 908 | 908 | CHAR = GETSOURCE |
| 909 | 909 | IF SCOM THEN RETURN HARDEOF <= NSOURCE |
| 910 | 910 | RETURN CHAR = ENDFILE |
| 911 | 911 | END READ$EOF |
| 913 | 913 | HEXRECORD: PROCEDURE BYTE |
| 919 | 919 | DECLARE XOFFSET BYTE |
| 920 | 920 | DECLARE NOERRS BYTE |
| 922 | 922 | PRINTERR: PROCEDURE (A) |
925 941 | 925 941 | IF NOERRS THEN |
| 926 | 926 | NOERRS = FALSE |
| 929 | 929 | END PRINTERR |
| 931 | 931 | CHECKXOFF: PROCEDURE |
| 932 | 932 | IF XOFFSET THEN |
| 933 | 933 | XOFFSET = FALSE |
| 936 | 936 | END CHECKXOFF |
| 938 | 938 | SAVECHAR: PROCEDURE BYTE |
| 943 | 943 | DO WHILE (I := GETSOURCE) = XOFF |
| 943 | 943 | XOFFSET = TRUE |
| 945 | 945 | NBUFF(NSOURCE) = I |
| 946 | 946 | IF (NSOURCE := NSOURCE + 1) >= LAST(KBUFF) THEN |
947 960 1016 | 947 960 1016 | CALL PRINTERR(.( )) |
| 948 | 948 | RETURN I |
| 951 | 951 | END SAVECHAR |
| 953 | 953 | DECLARE (M, RL, CS, RT) BYTE |
| 954 | 954 | LDA ADDRESS |
| 956 | 956 | READHEX: PROCEDURE BYTE |
| 957 | 957 | DECLARE H BYTE |
| 958 | 958 | IF (H := SAVECHAR) - <= 9 THEN RETURN H- |
| 959 | 959 | IF H - > 5 THEN |
| 961 | 961 | RETURN H - + 10 |
| 962 | 962 | END READHEX |
| 964 | 964 | READBYTE PROCEDURE BYTE |
| 966 | 966 | RETURN SHL(READHEX,4) OR READHEX |
| 967 | 967 | END READBYTE |
| 969 | 969 | READCS: PROCEDURE BYTE |
| 971 | 971 | RETURN CS := CS + READBYTE |
| 972 | 972 | END READCS |
| 974 | 974 | READADDR: PROCEDURE ADDRESS |
| 976 | 976 | RETURN SHL(DOUBLE(READCS),8) OR READCS |
| 977 | 977 | END READADDR |
| 979 | 979 | NOERRS = TRUE |
983 985 | 983 985 | HSOURCE = 0 |
| 984 | 984 | DO WHILE (CS := SAVECHAR) <> |
| 986 | 986 | IF CS = ENDFILE THEN |
| 987 | 987 | CALL PRINT(.( , WHAT, )) |
| 988 | 988 | IF READCHAR = ENDFILE THEN RETURN 1 |
| 989 | 989 | ELSE HSOURCE = 0 |
991 998 1018 | 991 998 1018 | CALL CHECKXOFF |
| 995 | 995 | CS = 0 |
| 996 | 996 | IF (RL := READCS) = 0 THEN |
| 997 | 997 | DO WHILE (RL := SAVECHAR) <> ENDFILE |
| 1000 | 1000 | IF NOERRS THEN RETURN 1 |
1001 1020 | 1001 1020 | RETURN 2 |
| 1005 | 1005 | LDA = READADDR |
| 1008 | 1008 | RT = READCS |
| 1009 | 1009 | DO WHILE RL <> 0 AND NOERRS |
| 1009 | 1009 | RL = RL - 1 |
| 1010 | 1010 | M = READCS |
| 1015 | 1015 | IF CS + READBYTE <> 0 THEN |
| 1019 | 1019 | IF NOERRS THEN RETURN 0 |
| 1021 | 1021 | END HEXRECORD |
| 1023 | 1023 | READTAPE: PROCEDURE |
| 1026 | 1026 | DECLARE (I,A) BYTE |
| 1028 | 1028 | DO WHILE (I := HEXRECORD) <= 1 |
| 1029 | 1029 | IF NOT (I = 1 AND IGNOR) THEN |
| 1030 | 1030 | DO A = 1 TO HSOURCE |
| 1031 | 1031 | CALL PUTDEST(HBUFF(A-1)) |
| 1033 | 1033 | CALL PUTDEST(CR) |
| 1033 | 1033 | CALL PUTDEST(LF) |
| 1034 | 1034 | IF I = 1 THEN |
| 1037 | 1037 | HBUFF(HSOURCE) = |
| 1038 | 1038 | CALL PRINT( .HBUFF) |
1039 1200 | 1039 1200 | CALL PRINT( .( )) |
| 1041 | 1041 | IF READCHAR = ENDFILE THEN RETURN |
| 1043 | 1043 | END READTAPE |
| 1045 | 1045 | FORMERR: PROCEDURE |
| 1047 | 1047 | END FORMERR |
| 1049 | 1049 | SETUPDEST: PROCEDURE |
| 1051 | 1051 | DHEX = AMBIG(.DEST(FEXT), ( )) |
| 1052 | 1052 | CALL MOVE(.DEST(FEXT), .FEXTH,FEXTL) |
1053 1091 | 1053 1091 | CALL MOVEXT(.( )) |
1053 1089 | 1053 1089 | CALL DELETE(.DEST) |
| 1054 | 1054 | CALL MAKE(.DEST) |
1055 1063 | 1055 1063 | IF DCNT = 255 THEN CALL ERROR(.( )) |
| 1056 | 1056 | DEST(32),NDEST = 0 |
| 1057 | 1057 | END SETUPDEST |
| 1059 | 1059 | SETUPSOURCE: PROCEDURE |
| 1060 | 1060 | HARDEOF = 0FFFFH |
| 1062 | 1062 | CALL OPEN(.SOURCE) |
| 1064 | 1064 | SOURCE(32) = 0 |
| 1066 | 1066 | SCOM = AMBIG(.SOURCE(FEXT), .( )) OR |
| 1067 | 1067 | EQUAL(.SOURCE(FEXT), .( )) |
| 1068 | 1068 | NSOURCE = SBLEN |
| 1069 | 1069 | END SETUPSOURCE |
| 1071 | 1071 | CHECK$STRINGS: PROCEDURE |
| 1076 | 1076 | END CHECK$STRINGS |
| 1078 | 1078 | CLOSEDEST: PROCEDURE |
| 1080 | 1080 | DO WHILE (LOW(HDEST) AnD 7FH) <> 0 |
1081 1370 | 1081 1370 | CALL PUTDEST(ENDFILE) |
1083 1360 | 1083 1360 | CALL CHECK$STRINGS |
| 1087 | 1087 | IF DCNT = 255 THEN CALL ERROR(.( ,WHAT, )) |
| 1088 | 1088 | CALL MOVEXT(.FEXTH) |
| 1090 | 1090 | CALL MOVE(.DEST,.DESK(16), 16) |
| 1092 | 1092 | CALL RENAME(.DEST) |
| 1093 | 1093 | END CLOSEDEST |
| 1095 | 1095 | SIZE$NBUF: PROCEDURE |
| 1097 | 1097 | NBUF = (SHR(DBLEN,7) AND 0FFH) - 1 |
| 1100 | 1100 | END SIZE$NBUF |
| 1102 | 1102 | SET$DBLEN: PROCEDURE |
| 1104 | 1104 | SBASE = .MEMORY |
| 1105 | 1105 | IF DBLEN >= 4000H THEN DBLEN = 7F80H |
| 1106 | 1106 | DBLEN = DBLEN + SBLEN |
1107 1114 | 1107 1114 | CALL SIZE$NBUF |
| 1108 | 1108 | END SET$DBLEN |
| 1110 | 1110 | SIZE$MEMORY: PROCEDURE |
| 1112 | 1112 | SBASE = .MEMORY + SHR(MEMSIZE - .MEMORY, 1) |
| 1113 | 1113 | SBLEN, DBLEN = SHR((MEMSIZE - .MEMORY) AND 0FF00H, 1) |
| 1115 | 1115 | END SIZE$MEMORY |
| 1117 | 1117 | COPYCHAR: PROCEDURE |
| 1119 | 1119 | DECLARE RESIZED BYTE |
| 1120 | 1120 | IF (RESIZED = (BLOCK AND PSOURCE <> 0)) THEN |
1121 1154 | 1121 1154 | CALL SET$DBLEN |
| 1122 | 1122 | IF NEXT OR IGNOR THEN |
| 1123 | 1123 | CALL READTAPE |
| 1124 | 1124 | DO WHILE NOT READ$EOF |
| 1125 | 1125 | CALL PUTDESK(CHAR) |
| 1127 | 1127 | IF RESIZED THEN |
1129 1138 1248 | 1129 1138 1248 | CALL SIZE$MEMORY |
| 1131 | 1131 | END COPYCHAR |
| 1133 | 1133 | SIMPLECOPY: PROCEDURE |
| 1134 | 1134 | DECLARE (FASTCOPY,I) BYTE |
| 1135 | 1135 | REAL$EOF: PROCEDURE BYTE |
| 1136 | 1136 | RETURN HARDEOF <> 0FFFFH |
| 1137 | 1137 | END REALEOF |
| 1139 | 1139 | TCBP = MCBP |
1140 1317 | 1140 1317 | CALL SETUPDEST |
1141 1339 | 1141 1339 | CALL SETUPSOURCE |
| 1143 | 1143 | FASTCOPY = TRUE |
| 1146 | 1146 | IF CONT(I) <> 0 THEN |
| 1148 | 1148 | IF NOT(I = 14 OR I = 21) THEN |
| 1150 | 1150 | FASTCOPY = FALSE |
| 1153 | 1153 | IF FASTCOPY THEN |
| 1155 | 1155 | DO WHILE NOT REAL$EOF |
| 1156 | 1156 | CALL FILLSOURCE |
| 1157 | 1157 | IF REAL$EOF THEN |
| 1158 | 1158 | NDEST = HARDEOF |
| 1158 | 1158 | ELSE NDEST = DBLEN |
1162 1357 | 1162 1357 | CALL COPYCHAR |
1163 1373 | 1163 1373 | CALL CLOSEDEST |
| 1164 | 1164 | END SIMPLECOPY |
| 1166 | 1166 | MULTCOPY: PROCEDURE |
| 1167 | 1167 | DECLARE (NEXTDIR, NCOPIED) BYTE |
| 1168 | 1168 | PRNAME: PROCEDURE |
| 1172 | 1172 | DO I = 1 TO FNSIZE |
| 1173 | 1173 | IF (C := DEST(I)) <> THEN |
| 1174 | 1174 | IF I = FEXT THEN CALL PRINTCHAR( ) |
| 1175 | 1175 | CALL PRINTCHAR(C) |
| 1178 | 1178 | END PRNAME |
| 1180 | 1180 | NEXTDIR,NCOPIED = 0 |
| 1184 | 1184 | CALL SETDMA(.BUFFER) |
| 1185 | 1185 | CALL SEARCH(.SEARFCB) |
| 1186 | 1186 | DO WHILE DCNT < NEXTDIR |
| 1187 | 1187 | CALL SEARCHN |
| 1190 | 1190 | IF DCNT = 255 THEN |
| 1191 | 1191 | IF NCOPIED = 0 THEN |
| 1195 | 1195 | NEXTDIR = DCNT + 1 |
| 1197 | 1197 | CALL MOVE(.BUFFER+SHL(DCNT AND 11B,5), .DEST,16) |
| 1198 | 1198 | CALL MOVE(.DEST,.SOURCE,16) |
| 1199 | 1199 | IF (NCOPIED := NCOPIED + 1) = 1 THEN |
| 1201 | 1201 | CALL PRNAME |
1202 1280 1294 1302 | 1202 1280 1294 1302 | CALL SIMPLECOPY |
| 1204 | 1204 | END MULTCOPY |
| 1206 | 1206 | SET$SDISK: PROCEDURE |
| 1207 | 1207 | IF DISK > 0 THEN SDISK = DISK - 1 |
| 1207 | 1207 | ELSE SDISK = CDISK |
| 1208 | 1208 | END SET$SDISK |
| 1210 | 1210 | SET$DDISK: PROCEDURE |
| 1211 | 1211 | IF PARSET THEN CALL FORMERR |
| 1212 | 1212 | IF DISK > 0 THEN DDISK = DISK - 1 |
| 1212 | 1212 | ELSE DDISK = CDISK |
| 1213 | 1213 | END SET$DDISK |
| 1215 | 1215 | CHECK$DISK: PROCEDURE |
| 1216 | 1216 | IF DDISK = SDISK THEN CALL FORMERR |
| 1217 | 1217 | END CHECK$DISK |
| 1219 | 1219 | CHECK$EOL: PROCEDURE |
| 1221 | 1221 | IF CHAR <> CR THEN CALL FORMERR |
| 1222 | 1222 | END CHECK$EOL |
| 1224 | 1224 | SCANDEST: PROCEDURE(COPYFCB) |
| 1225 | 1225 | DECLARE COPYFCB ADDRESS |
1226 1291 1301 1338 | 1226 1291 1301 1338 | CALL SET$SDISK |
1227 1293 | 1227 1293 | CALL CHECK$EOL |
| 1228 | 1228 | CALL MOVE(.SOURCE,COPYFCB,33) |
1229 1291 | 1229 1291 | CALL CHECK$DISK |
| 1230 | 1230 | END SCANDEST |
| 1232 | 1232 | SCANEQL: PROCEDURE |
1233 1288 1326 1334 1362 | 1233 1288 1326 1334 1362 | CALL SCAN(.SOURCE) |
| 1234 | 1234 | IF NOT (TYPE = SPECL AND CHAR = ) THEN CALL FORMERR |
| 1235 | 1235 | MCBP = CBP |
| 1236 | 1236 | END SCANEQL |
| 1240 | 1240 | CALL MOVE(80H,.COMLEN,80H) |
| 1241 | 1241 | MULTCOM = COMLEN = 0 |
| 1244 | 1244 | CDISK = MON2(25,0) |
| 1246 | 1246 | RETRY |
| 1251 | 1251 | CALL LIFTHEAD |
| 1252 | 1252 | CONCNT,COLUMN = 0 |
| 1254 | 1254 | IF MULTCOM THEN |
| 1255 | 1255 | CALL READCOM |
1258 1307 | 1258 1307 | CBP = 255 |
| 1259 | 1259 | IF COMLEN = 0 THEN |
| 1260 | 1260 | CALL SELECT(CDISK) |
| 1261 | 1261 | CALL EXIT |
| 1265 | 1265 | DDISK,SDISK,PSOURCE,PDEST = 0 |
1266 1309 | 1266 1309 | CALL SCAN( .DEST) |
| 1267 | 1267 | IF TYPE = PERIPH THEN GO TO SIMPLECOM |
1268 1289 | 1268 1289 | IF TYPE = DISKNAME THEN |
| 1269 | 1269 | DDISK = DISK - 1 |
1270 1287 | 1270 1287 | CALL SCANEQL |
| 1271 | 1271 | CALL SCAN( SOURCE) |
| 1273 | 1273 | IF TYPE <> FILE THEN CALL FORMERR |
| 1274 | 1274 | IF AMBIG THEN |
| 1275 | 1275 | CALL SCANDEST(.SEARFCB) |
| 1276 | 1276 | CALL MULTCOPY |
| 1278 | 1278 | CALL SCANDEST(.DEST) |
1282 1295 1303 | 1282 1295 1303 | GO TO ENDCOM |
| 1285 | 1285 | IF TYPE <> FILE OR AMBIG THEN CALL FORMERR |
1286 1316 | 1286 1316 | CALL SET$DDISK |
| 1292 | 1292 | CALL MOVE(.DEST,.SOURCE,33) |
1298 1314 | 1298 1314 | IF TYPE = FILE THEN |
| 1299 | 1299 | IF CHAR <> CR THEN GO TO SIMPLECOM |
| 1306 | 1306 | SIMPLECOM: |
| 1310 | 1310 | IF (TYPE < FILE) OR AMBIG THEN |
| 1313 | 1313 | DHEX = FALSE |
1318 1340 | 1318 1340 | CHAR = 255 |
| 1321 | 1321 | IF CHAR >= NULP OR CHAR <= RDR THEN CALL ERROR(.( )) |
| 1323 | 1323 | IF (PDEST .= CHAR + 1) = PUNP THEN CALL NULLS |
| 1327 | 1327 | IF TYPE <> SPECL OR CHAR <> THEN |
| 1331 | 1331 | C1,C2,C3 = 0 |
| 1332 | 1332 | COPYING = TRUE |
| 1333 | 1333 | DO WHILE COPYING |
| 1335 | 1335 | SCOM = FALSE |
| 1336 | 1336 | IF TYPE = FILE AND NOT AMBIG THEN |
| 1342 | 1342 | IF TYPE <> PERIPH OR (CHAR <= LST AND CHAR > RDR > THEN |
| 1345 | 1345 | COLUMN = 0 |
| 1346 | 1346 | PUTNUM = TRUE |
| 1347 | 1347 | SCOM = SCOM OR OBJ |
| 1348 | 1348 | PSOURCE = CHAR + 1 |
| 1349 | 1349 | IF CHAR = NULP THEN CALL NULLS |
| 1350 | 1350 | IF CHAR = EDFP THEN CALL PUTDEST(ENDFILE) |
| 1352 | 1352 | IF (CHAR < HSRDR AND DHEX) THEN NEXT = 1 |
| 1354 | 1354 | IF PDEST = PRNT THEN |
| 1355 | 1355 | TABS = 0 |
| 1355 | 1355 | NUMB = 1 |
| 1363 | 1363 | IF TYPE <> SPECL OR (CHAR <> AND CHAR <> CR) THEN |
| 1365 | 1365 | COPYING = CHAR <> CR |
| 1369 | 1369 | IF PDEST = PUNP THEN |
| 1370 | 1370 | CALL NULLS |
| 1372 | 1372 | IF PDEST = 0 THEN |
| 1376 | 1376 | ENDCOM: |
| 1377 | 1377 | COMLEN = MULTCOM |

| Matching Comments and Strings |
| File1 Line# |
File2 Line# |
Comment/String |
| 3 | 3 | P E R I P H E R A L I N T E R C H A N G E P R O G R A M |
| 5 | 5 | COPYRIGHT (C) DIGITAL RESEARCH |
| 6 | 6 | NOVEMBER, 1976 |
| 9 | 9 | COPYRIGHT (C) 1976, DIGITAL RESEARCH. PIP VERS 1.5 |
| 11 | 11 | ADDRESS OF INP, DEVICE |
| 12 | 12 | ADDRESS OF OUT, DEVICE |
| 16 | 16 | SEND B TO OUT, DEVICE |
| 22 | 22 | PATCHED TO RETURN REG-A |
| 27 | 27 | WAIT FOR 50 MSEC |
| 31 | 31 | LITERAL DECLARATIONS |
| 33 | 33 | LITERALLY |
| 34 | 34 | 1AH |
| 36 | 36 | 5FH |
| 37 | 37 | 5BH |
| 37 | 37 | LEFT BRACKET |
| 38 | 38 | 5DH |
| 38 | 38 | RIGHT BRACKET |
| 39 | 39 | 13H |
| 39 | 39 | TRANSMIT BUFFER FUNCTION |
| 43 | 43 | POSITION OF 'PUN' + 1 |
| 44 | 44 | CONSOLE |
| 45 | 45 | NUL, BEFORE INCREMENT |
| 46 | 46 | EOF, BEFORE INCREMENT |
| 47 | 47 | RDR |
| 47 | 47 | READER DEVICES |
| 48 | 48 | PRINTER |
| 57 | 57 | REEL NUMBER FIELD OF FCB |
| 58 | 58 | 'HEX' BUFFER SIZE |
| 67 | 67 | REBOOT ADDRESS UPON GOMPLETION |
| 68 | 68 | COLUMN COUNT FOR PRINTER TABS |
| 69 | 69 | SET FOR AMBIGUOUS FILE REFS |
| 70 | 70 | TRUE IF PARAMETERS PRESENT |
| 71 | 71 | USED TO FEED SEARCH CHARACTERS |
| 72 | 72 | LENGTH OF FEED STRING |
| 73 | 73 | USED IN MATCHING STRINGS |
| 74 | 74 | USED TO TERMINATE QUIT COMMAND |
| 75 | 75 | NUM BUFFERS-l IN SBUFF AND DBUFF |
| 76 | 76 | CURRENT DISK |
| 77 | 77 | DEFAULT BUFFER |
| 78 | 78 | SEARCH FCB IN MULTI COPY |
| 79 | 79 | MEMORY SIZE |
| 80 | 80 | SOURCE BUFFER LENGTH |
| 81 | 81 | BEST BUFFER LENGTH |
| 82 | 82 | SOURCE BUFFER BASE |
| 83 | 83 | THE VECTORS DBUFF AND SBUFF ARE DECLARED WITH DIMENSION |
| 84 | 84 | 1024, BUT ACTUALLY VARY WITH THE FREE MEMORY SIZE |
| 85 | 85 | DESTINATION BUFFER |
| 86 | 86 | SOURCE BUFFER |
| 87 | 87 | SOURCE DISK |
| 88 | 88 | SOURCE IS 'GOM' FILE IF TRUE |
| 89 | 89 | DEST IS 'HEX' FILE IF TRUE |
| 90 | 90 | SOURCE FCB |
| 91 | 91 | DESTINATION FCB |
| 92 | 92 | DESTINATION DISK |
| 93 | 93 | HEX FILE BUFFER |
| 94 | 94 | NEXT HEX SOURCE CHARACTER |
| 96 | 96 | NEXT SOURCE CHARACTER |
| 97 | 97 | SET TO NSOURCE ON REAL EOF |
| 98 | 98 | NEXT DESTINATION CHARACTER |
| 101 | 101 | DESTINATION DEVICE |
| 102 | 102 | CURRENT SOURCE DEVICE |
| 105 | 105 | FALSE IF PROCESSING ONE LIKE |
| 106 | 106 | SET WHEN READY FOR NEXT LINE NJM |
| 107 | 107 | COUNTER FOR CONSOLE READY CHECK |
| 108 | 108 | LAST CHARACTER SCANNED |
| 109 | 109 | TYPE OF CHARACTER SCANNED |
| 110 | 110 | FILE NAME LENGTH |
116 122 | 116 122 | PATCHED WITH JMP 0005 |
| 127 | 127 | READ CURRENT READER DEVICE |
| 132 | 132 | READ CONSOLE CHARACTER |
| 139 | 139 | WHILE TRUE |
| 156 | 156 | PRINT THE STRING STARTING AT ADDRESS A UNTIL THE |
| 157 | 157 | NEXT DOLLAR SIGN IS ENCOUNTERED |
| 217 | 217 | COMMAND BUFFER |
| 218 | 218 | MAX BUFFER LENGTH |
| 219 | 219 | CURRENT LENGTH |
| 220 | 220 | COMMAND BUFFER CONTENTS |
| 221 | 221 | TEMP CBP, COMMAND BUFFER POINTER |
| 224 | 224 | READ INTO COMMAND BUFFER |
| 232 | 232 | CHECK CONSOLE CHARACTER READY |
| 236 | 236 | INTEL IOBYTE |
| 238 | 238 | CONTROL TOGGLE VECTOR |
| 239 | 239 | ONE FOR EACH ALPHABETIC |
| 240 | 240 | 00 01 02 03 04 05 06 07 08 09 10 11 12 13 |
| 241 | 241 | A B C D E F G H I J K L M N |
| 242 | 242 | 14 15 16 17 18 19 26 21 22 23 24 25 |
| 243 | 243 | O P Q R S T U V W X Y Z |
244 500 | 244 500 | BLOCK MODE TRANSFER |
| 245 | 245 | DELETE CHARACTERS |
| 246 | 246 | ECHO CONSOLE CHARACTERS |
| 247 | 247 | HEX FILE TRANSFER |
| 248 | 248 | IGNORE,00 RECORD ON FILE |
| 249 | 249 | TRANSLATE TO LOWER CASE |
| 250 | 250 | NUMBER OUTPUT LINES |
| 251 | 251 | OBJECT FILE TRANSFER |
| 252 | 252 | QUIT COPY |
| 253 | 253 | START COPY |
| 254 | 254 | TAB SET |
| 255 | 255 | UPPER CASE TRANSLATE |
| 256 | 256 | VERIFY EQUAL FILES ONLY |
| 257 | 257 | ZERO PARITY ON INPUT |
| 268 | 268 | INTELLEC 8 INTEL/ICOM READER INPUT |
| 271 | 271 | READ THE INTEL / ICOM READER |
| 272 | 272 | DATA |
| 273 | 273 | STATUS |
| 274 | 274 | COMMAND |
| 276 | 276 | 0CH |
| 277 | 277 | 00H |
| 277 | 277 | STOP |
| 279 | 279 | STROBE THE READER |
| 282 | 282 | NOT READY |
| 284 | 284 | DATA READY |
| 288 | 288 | ZERO SUPPRESSION |
| 289 | 289 | LINE COUNT ON PRINTER |
| 298 | 298 | ZERO THE COMLEN IN CASE THIS IS A SINGLE COMMAND |
| 300 | 300 | DELETE ANY $$$ SUB FILES IN CASE BATCH PROCESSING |
| 301 | 301 | $$$ SUB |
| 315 | 315 | FILL THE SOURCE BUFFERS |
| 320 | 320 | SET DMA ADDRESS TO NEXT BUFFER POSIITION |
| 324 | 324 | DISK READ ERROR$ |
| 325 | 325 | END - OF - FILE |
| 326 | 326 | SET HARD END-OF-FILE |
| 335 | 335 | WRITE OUTPUT BUFFERS UP TO BUT NOT INCLUDING POSITION |
| 336 | 336 | NDEST - THE LOW ORDER 7 BITS OF NDEST ARE ZERO |
| 344 | 344 | SET DMA ADDRESS TO NEXT BUFFER |
| 346 | 346 | VERIFY MODE |
| 348 | 348 | END OF EXTENT |
| 355 | 355 | DISK WRITE ERROR# |
| 358 | 358 | VERIFY DATA WRITTEN OK |
| 359 | 359 | NUMBER OF BUFFERS |
| 361 | 361 | WENT OVER CURRENT EXTENT |
| 364 | 364 | SAVE CURRENT RECORD NUMBER |
| 366 | 366 | ONE OR TWO EXTENTS WHERE WRITTEN |
| 368 | 368 | 1 MAY BE (TWO'S COMPLEMENT) NEGATIVE |
| 371 | 371 | NEXT TO READ |
| 372 | 372 | FOR COMPARE |
| 376 | 376 | PERFORM COMPARISON |
| 383 | 383 | VERIFY ERROR# |
| 385 | 385 | THEN INTO NEXT EXTENT |
| 395 | 395 | WRITE BYTE B TO THE DESTINATION DEVICE GIVEN BY PDEST |
| 398 | 398 | MAY BE PAST RIGHT SIDE |
| 402 | 402 | IN CASE IT IS ALTERED |
| 404 | 404 | CASE 0 IS THE DESTINATION FILE |
| 410 | 410 | CASE 1 IS ARD (ADDMASTER) |
| 412 | 412 | CASE 2 IS IRD (INTEL/IGON) |
414 568 | 414 568 | CASE 3 IS PTR |
416 571 | 416 571 | CASE 4 IS UR1 |
418 574 | 418 574 | CASE 5 IS UR2 |
420 577 | 420 577 | CASE 6 IS RDR |
| 422 | 422 | NOT A CHARACTER SINK# |
423 580 | 423 580 | CASE 7 IS OUT |
425 582 | 425 582 | CASE 8 IS LPT |
428 584 | 428 584 | CASE 9 IS UL1 |
| 431 | 431 | CASE 10 IS PRN (TABS EXPANDED, LINES LISTED, CHANGED TO LST) |
434 588 | 434 588 | CASE 11 IS LST |
437 590 | 437 590 | CASE 12 IS PTP |
440 592 | 440 592 | CASE 13 IS UP1 |
443 594 | 443 594 | CASE 14 IS UP2 |
446 596 | 446 596 | CASE 15 IS PUN |
449 600 | 449 600 | CASE 16 IS TTY |
452 603 | 452 603 | CASE 17 IS CRT |
455 606 | 455 606 | CASE 18 IS UC1 |
458 609 | 458 609 | CASE 19 IS CON |
| 485 | 485 | CLEAR OUTPUT BUFFER IN BLOCK MODE TRANSM1SION |
| 488 | 488 | REMAINING PARTIAL BUFFER LENGTH |
| 489 | 489 | START OF SEGMENT NOT WRITTEN |
| 490 | 490 | CLEARS BUFFERS |
| 492 | 492 | DATA MOVED TO BEGINNING OF BUFFER |
| 498 | 498 | WRITE DESTINATION CHARACTER, CHECK TABS AND LINES |
| 503 | 503 | BUFFERS WRITTEN |
| 504 | 504 | DON'T PASS THE X-OFF |
| 507 | 507 | EXPAND TO NEXT TAB POSITION |
| 510 | 510 | STARTING BIAS ON LINE |
| 524 | 524 | MAY NEED NEWLINE NEXT TIME AROUND |
| 531 | 531 | TRANSLATE ALPHA TO UPPER CASE |
| 532 | 532 | LOWER CASE |
| 533 | 533 | TO UPPER CASE |
| 539 | 539 | TRANSLATE TO LOWER CASE ALPHA |
| 540 | 540 | TO LOWER |
| 545 | 545 | READ NEXT SOURCE CHARACTER |
| 548 | 548 | 1 ... RDR+1 |
| 552 | 552 | READER STOPPING |
| 556 | 556 | CONSOLE STATUS CHECK BELOW |
| 557 | 557 | SAVE IT IN CASE IT IS ALTERED |
| 559 | 559 | CASE 0 IS SOURCE FILE |
| 564 | 564 | CASE 1 IS INP |
| 566 | 566 | CASE 2 IS IRD (INTEL/ICOM) |
| 586 | 586 | CASE 10 IS PRN |
| 593 | 593 | GO TO NOTSOURCE; |
| 598 | 598 | NOT A CHARACTER SOURCE$ |
| 611 | 611 | DON'T CHECK CONSOLE STATUS |
| 614 | 614 | OF CASES |
| 615 | 615 | RESTORE IOBYTE |
| 616 | 616 | COPY TO CONSOLE DEVICE |
| 620 | 620 | TEST FOR CONSOLE CHAR READY |
| 622 | 622 | SOURCE IS A COM FILE |
| 623 | 623 | ASCII |
| 629 | 629 | ABORTED$ |
| 640 | 640 | GET NEXT SOURCE CHARACTER |
| 643 | 643 | MATCH START AND QUIT STRINGS |
| 645 | 645 | END HATCH |
| 646 | 646 | SAVE CURRENT CHARACTER |
| 650 | 650 | NO MATCH |
| 655 | 655 | TERMINATED WITH CR,LF,ENDF1LE |
| 657 | 657 | LOOKING FOR START |
| 658 | 658 | GET SEARCH CHARACTERS |
| 665 | 665 | LOOKING FOR START STRING |
| 669 | 669 | OTHERWISE NO MATCH, SKIP CHARACTER |
| 671 | 671 | PASS CHARACTERS TIL MATCH |
| 674 | 674 | SUBSEQUENTLY RETURN CR, LF, ENDFILE |
| 680 | 680 | OF DO FOREVER |
| 683 | 683 | SELECTED DISK |
| 695 | 695 | ADDRESS OF FCB TO FILL |
| 696 | 696 | FCB TEMPLATE |
| 697 | 697 | TEMP COUNTERS |
| 699 | 699 | SCAN LOOKS FOR THE NEXT DELIMITER, DEVICE NAME, OR FILE NAME. |
| 700 | 700 | THE VALUE OF CBP MUST BE 255 UPON ENTRY THE FIRST TIME |
| 705 | 705 | =.:,<> |
| 714 | 714 | CONTAINS AMBIGUOUS REF |
| 718 | 718 | FILL CURRENT NAME OR TYPE WITH QUESTION MARKS |
| 720 | 720 | QUESTION MARK |
| 733 | 733 | SCAN OPTIONAL PARAMETERS |
| 735 | 735 | SCAN PAST BRACKET |
| 737 | 737 | NOT ALPHA |
| 739 | 739 | BAD PARAMETER$ |
| 741 | 741 | SCAN PARAMETER VALUE |
| 743 | 743 | START OR QUIT COMMAND |
| 744 | 744 | START OF STRING |
| 764 | 764 | INITIALIZE FILE CONTROL BLOCK TO EMPTY |
| 771 | 771 | DEBLANK COMMAND BUFFER |
| 774 | 774 | SAVE STARTING POSITION OF SCAN FOR DIAGNOSTICS |
| 777 | 777 | MAY BE A SEPARATOR |
| 783 | 783 | CHECK PERIPHERALS AND DISK FILES |
| 785 | 785 | CLEAR PARAMETERS |
| 791 | 791 | SCAN NEXT NAME |
| 795 | 795 | ERROR: FILE NAME TOO LONG |
| 801 | 801 | CHECK FOR DISK NAME OR DEVICE NAME |
| 803 | 803 | ALREADY SET |
| 805 | 805 | MAY BE DISK NAME A ... Z |
| 808 | 808 | ERROR: INVALID DISK NAME |
| 809 | 809 | MAY BE DISK NAME ONLY |
| 819 | 819 | MAY BE A THREE CHARACTER DEVICE NAME |
| 820 | 820 | ERROR: CANNOT BE DEVICE NAME |
| 823 | 823 | LOOK FOR DEVICE NAME |
| 826 | 826 | INPIRDPTRUR1UR2RDROUTLPTUL1PRNLST |
| 827 | 827 | PTPUP1UP2PUNTTYGRTUC1CONNULEOF |
| 828 | 828 | NOTE THAT ALL READER-LIKE DEVICES MUST BE |
| 829 | 829 | PLACED BEFORE 'RDR', AND ALL LISTING-LIKE DEVICES |
| 830 | 830 | MUST APPEAR BELOW LST, BUT ABOVE RDR. THE LITERAL |
| 831 | 831 | DECLARATIONS FOR RDR, LST, AND PUMP MUST INDICATE |
| 832 | 832 | THE POSITIONS OF THESE DEVICES IN THE LIST |
| 839 | 839 | COMPLETE MATCH |
| 841 | 841 | SCAN PARAMETERS |
| 846 | 846 | OTHERWISE TRY NEXT DEVICE |
| 849 | 849 | ERROR: NO DEVICE NAME MATCH |
| 851 | 851 | PARAMETERS FOLLOW |
| 855 | 855 | CHAR IS NOT '.', SO FILE NAME IS SET SCAN REMAINDER |
| 856 | 856 | ERROR: NO PRIMARY NAME |
| 862 | 862 | ERROR: TYPE FIELD TOO LONG |
| 868 | 868 | RESCAN DELIMITER NEXT TIME AROUND |
| 871 | 871 | DISK IS THE SELECTED DISK (1 2 3 ... ) |
| 872 | 872 | DEFAULT |
| 880 | 880 | SEND 40 NULLS TO OUTPUT DEVICE |
| 886 | 886 | HOLDS DESTINATION FILE TYPE |
| 887 | 887 | TRUE WHILE COPYING TO DEST FILE |
| 890 | 890 | MOVE THREE CHARACTER EXTENT INTO DEST FCB |
| 895 | 895 | COMPARE THE STRINGS AT A AND B UNTIL EITHER A MISMATCH OR |
| 896 | 896 | A '$' IS ENCOUNTERED IN STRING B |
| 907 | 907 | RETURN TRUE IF END OF FILE |
| 914 | 914 | READ ONE RECORD INTO SBUFF AND CHECK FOR PROPER FORM |
| 915 | 915 | RETURNS 0 IF RECORD OK |
| 916 | 916 | RETURNS 1 IF END OF TAPE (:00800) |
| 917 | 917 | RETURNS 2 IF ERROR IN RECORD |
| 919 | 919 | TRUE IF XOFF RECVD |
| 920 | 920 | TRUE IF NO ERRORS IN THIS RECORD |
| 923 | 923 | PRINT ERROR MESSAGE IF NOERRS TRUE |
| 939 | 939 | READ CHARACTER AND SAVE IN BUFFER |
| 947 | 947 | RECORD TOO LONG$ |
| 950 | 950 | ON ERROR FLAG |
| 954 | 954 | LOAD ADDRESS WHICH FOLLOWS : |
| 960 | 960 | INVALID DIGIT$ |
| 965 | 965 | READ TWO HEX DIGITS |
| 970 | 970 | READ BYTE WITH CHECKSUM |
| 975 | 975 | READ DOUBLE BYTE WITH CHECKSUM |
| 979 | 979 | NO ERRORS DETECTED IN THIS RECORD |
| 981 | 981 | READ NEXT RECORD |
| 982 | 982 | SCAN FOR THE ':' |
| 987 | 987 | END OF FILE, CTL-Z |
| 994 | 994 | ':' FOUND |
| 996 | 996 | END OF TAPE |
| 1004 | 1004 | RECORD LENGTH IS NOT ZERO |
| 1005 | 1005 | LOAD ADDRESS |
| 1007 | 1007 | READ WORDS UNTIL RECORD LENGTH EXHAUSTED |
| 1008 | 1008 | RECORD TYPE |
| 1011 | 1011 | INCREMENT LA HERE FOR EXACT ADDRESS |
| 1014 | 1014 | CHECK SUM |
| 1016 | 1016 | CHECKSUM ERROR$ |
| 1024 | 1024 | READ HEX FILE FROM HIGH SPEED READER TO 'HEX' FILE. |
| 1025 | 1025 | CHECK EACH RECORD FOR VALID DIGITS, AND PROPER CHECKSUM |
| 1034 | 1034 | END OF TAPE ENCOUNTERED |
| 1039 | 1039 | CORRECT ERROR, TYPE RETURN OR CTL-Z$ |
| 1046 | 1046 | INVALID FORMAT$ |
| 1051 | 1051 | HEX$ |
| 1052 | 1052 | SAVE TYPE |
| 1053 | 1053 | $$$ |
| 1053 | 1053 | REMOVE OLD $$$ FILE |
| 1054 | 1054 | CREATE A NEW ONE |
| 1055 | 1055 | NO DIRECTORY SPACE$ |
| 1063 | 1063 | NO FILE$ |
| 1065 | 1065 | CAUSE IMMEDIATE READ |
| 1066 | 1066 | COM$ |
| 1067 | 1067 | CMI$ |
| 1073 | 1073 | START NOT FOUND$ |
| 1075 | 1075 | QUIT NOT FOUND$ |
| 1079 | 1079 | CLEAR BUFFER |
| 1087 | 1087 | WRITE PROTECTED |
| 1088 | 1088 | RECALL ORIGINAL TYPTE |
| 1089 | 1089 | REMOVE OLD FILE |
| 1090 | 1090 | READY FOR RENAME |
| 1091 | 1091 | *** |
| 1096 | 1096 | COMPUTE NUMBER OF BUFFERS - 1 FROM DBLEN |
| 1098 | 1098 | COMPUTED AS DBLEN/12B-1, WHERE DBLEN <= 32K (AND THUS |
| 1099 | 1099 | NBUF RESULTS IN A VALUE <= 2**15/2**7-1 = 2**8-1 = 255) |
| 1103 | 1103 | ABSORB THE SOURCE BUFFER INTO THE DEST BUFFER |
| 1111 | 1111 | SET UP SOURCE AND DESTINATION BUFFERS |
| 1118 | 1118 | PERFORM THE ACTUAL COPY FUNCTION |
| 1119 | 1119 | TRUE IF SBUFF AND DBUFF COMBINED |
| 1120 | 1120 | BLOCK NODE |
| 1121 | 1121 | ABSORB SOURCE BUFFER |
| 1122 | 1122 | HEX FILE |
| 1139 | 1139 | FOR ERROR TRACING |
| 1142 | 1142 | FILES READY FOR DIRECT COPY |
| 1144 | 1144 | LOOK FOR PARAMETERS |
| 1149 | 1149 | NOT OBJ OR VERIFY |
| 1153 | 1153 | COPY DIRECTLY TO DBUFF |
| 1154 | 1154 | EXTEND DBUFF |
| 1169 | 1169 | PRINT CURRENT FILE NAME |
| 1182 | 1182 | FIND A MATCHING ENTRY |
| 1189 | 1189 | FILE CONTROL BLOCK IN BUFFER |
| 1192 | 1192 | NOT FOUND$ |
| 1196 | 1196 | GET THE FILE CONTROL BLOCK NAME TO DEST |
| 1198 | 1198 | FILL BOTH FCB'S |
| 1200 | 1200 | COPYING -$ |
| 1211 | 1211 | PARAMETERS PRESENT |
| 1235 | 1235 | FOR ERROR PRINTING |
| 1238 | 1238 | BUFFER AT 80H CONTAINS REMAINDER OF LINE TYPED |
| 1239 | 1239 | FOLLOWING THE COWHAND 'PIP' - IF ZERO THEN PROMPT TIL CR |
| 1243 | 1243 | GET CURRENT DISK |
| 1247 | 1247 | ENTER HERE ON ERROR EXIT FROM THE PROCEDURE 'ERROR' |
| 1249 | 1249 | MAIN PROCESSING LOOP. PROCESS UNTIL CR ONLY |
| 1252 | 1252 | PRINTER TABS |
| 1253 | 1253 | READ FROM CONSOLE IF NOT A ONELINER |
| 1259 | 1259 | SINGLE CARRIAGE RETURN |
| 1264 | 1264 | LOOK FOR SPECIAL CASES FIRST |
| 1272 | 1272 | MAY BE MULTI COPY |
| 1279 | 1279 | FORM IS A:=B: UFN |
| 1297 | 1297 | MAY BE POSSIBLE TO DO A FAST DISK COPY |
1298 1300 | 1298 1300 | FILE TO FILE |
| 1307 | 1307 | READY FOR RESCAN |
| 1308 | 1308 | OTHERWISE PROCESS SIMPLE REQEST |
| 1310 | 1310 | DELIMITER OR ERROR |
| 1311 | 1311 | UNRECOGNIZED DESTINATION$ |
| 1315 | 1315 | DESTINATION IS A FILE, SAVE EXTENT NAME |
| 1320 | 1320 | PERIPHERAL NAME |
| 1321 | 1321 | CANNOT WRITE$ |
| 1325 | 1325 | NOW SCAN THE DELIMITER |
| 1328 | 1328 | INVALID PIP FORMAT$ |
| 1330 | 1330 | OTHERWISE SCAN AND COPY UNTIL CR |
| 1331 | 1331 | CLEAR LINE COUNTERS |
| 1336 | 1336 | A SOURCE FILE |
| 1343 | 1343 | CANNOT READ$ |
| 1346 | 1346 | CAUSES IMMEDIATE NEWLINE IF NUMB SET |
| 1347 | 1347 | MAY BE ABSOLUTE COPY |
| 1351 | 1351 | DISK COPY |
| 1353 | 1353 | HEX FILE SET IF SOURCE IS RDR AND DEST IS HEX FILE |
| 1361 | 1361 | READ ENDFILE, GO TO NEXT SOURCE |
| 1364 | 1364 | INVALID SEPARATOR$ |
| 1368 | 1368 | IF NECESSARY, CLOSE FILE OR PUNCH TRAILER |
| 1372 | 1372 | FILE HAS TO BE CLOSED AND RENAMED |
| 1375 | 1375 | COMLEN SET TO 0 IF NOT PROCESSING MULTIPLE COMMANDS |
| 1379 | 1379 | DO FOREVER |

| Matching Instruction Sequences |
| File1 Line# |
File2 Line# |
Number of matching instructions |
| 1 | 1 | 1210 |
| 424 | 436 | 13 |
| 424 | 448 | 13 |
| 426 | 569 | 12 |
| 426 | 601 | 12 |
| 436 | 424 | 13 |
| 436 | 448 | 13 |
| 438 | 569 | 12 |
| 438 | 601 | 12 |
| 448 | 424 | 13 |
| 448 | 436 | 13 |
| 450 | 569 | 12 |
| 450 | 601 | 13 |
| 569 | 426 | 12 |
| 569 | 438 | 12 |
| 569 | 450 | 12 |
| 569 | 601 | 12 |
| 601 | 426 | 12 |
| 601 | 438 | 12 |
| 601 | 450 | 13 |
| 601 | 569 | 12 |

| Matching Identifiers |
| 0000 |
0000$0100B |
0000$1000B |
0001$0000B |
0010$0000B |
0011$0000B |
01B |
0FF00H |
| 0FF80H |
0FFFFH |
0FFH |
0H |
10 |
10$0000B |
1000$0000B |
101$1111B |
| 1024 |
106H |
11 |
110$0001B |
1100$0000B |
1100B |
111$1010B |
1111B |
| 11B |
12 |
127 |
128 |
13 |
130 |
14 |
15 |
| 16 |
17 |
18 |
183H |
19 |
20 |
21 |
22 |
| 23 |
25 |
250 |
255 |
26 |
32 |
33 |
39 |
| 3H |
4000H |
5CH |
6H |
7F80H |
7FH |
80H |
8BH |
| AHD |
AMBIG |
BLOCK |
BUFFER |
C1 |
C2 |
C3 |
CBP |
| CBUFF |
CDISK |
CHAR |
CHECK$DISK |
CHECK$EOL |
CHECK$STRINGS |
CHECKXOFF |
CHKSET |
| CLEARBUFF |
CLOSE |
CLOSEDEST |
COLUMN |
COMBUFF |
COMLEN |
CONBRK |
CONCHK |
| CONCNT |
CONL |
CONP |
CONT |
COPYCHAR |
COPYFCB |
COPYING |
COPYRIGHT |
| CPIO |
CR |
CRLF |
CS |
DATAOK |
DBLEN |
DBUFF |
DCNT |
| DDISK |
DEBLANK |
DEC |
DEL |
DELET |
DELETE |
DELIMITER |
DESK |
| DEST |
DHEX |
DISK |
DISKNAME |
DISKREAD |
DISKWRITE |
DMA |
DOUBLE |
| ECHO |
EDFP |
ENDCOM |
ENDFILE |
EOFP |
EQUAL |
ERR |
ERROR |
| EXIT |
EXTCNT |
F1 |
FALSE |
FASTCOPY |
FCB |
FCBA |
FEEDBASE |
| FEEDLEN |
FEXT |
FEXTH |
FEXTL |
FILE |
FILLQ |
FILLSOURCE |
FLEN |
| FNAM |
FNSIZE |
FOREVER |
FORMERR |
FREEL |
FSIZE |
GETFCB |
GETSOURCE |
| GETSOURCEC |
GNC |
HA |
HARDEOF |
HBUFF |
HBUFS |
HDEST |
HEXRECORD |
| HSOURCE |
HSRDR |
IGNOR |
INITIALIZE |
INP |
INPLOC |
INPUT |
INTIN |
| IO |
IOB |
IOBYTE |
KBUFF |
L1 |
L2 |
LA |
LAST |
| LB |
LDA |
LEN |
LF |
LIFTHEAD |
LIT |
LOW |
LOWER |
| LST |
LSTL |
LTRAN |
MAKE |
MATCH |
MATCHLEN |
MAXLEN |
MCBP |
| MDISK |
MEMORY |
MEMSIZE |
MON |
MON1 |
MON2 |
MOVE |
MOVEXT |
| MULTCOM |
MULTCOPY |
NA |
NAME |
NBUF |
NBUFF |
NCOPIED |
NDEST |
| NEWLINE |
NEXT |
NEXTDIR |
NOERRS |
NOTDEST |
NOTSOURCE |
NSIZE |
NSOURCE |
| NULLS |
NULP |
NUMB |
OBJ |
OPEN |
OUT |
OUTLOC |
OUTPUT |
| PARSET |
PDEST |
PERIPH |
PIPMOD |
PLB |
PRINT |
PRINT1 |
PRINTCHAR |
| PRINTCMAR |
PRINTDIG |
PRINTERR |
PRNAME |
PRNT |
PSOURCE |
PTPH |
PTRC |
| PTRG |
PTRH |
PTRI |
PTRS |
PUMP |
PUNL |
PUNP |
PUTCHAR |
| PUTDESK |
PUTDEST |
PUTDESTC |
PUTNUM |
QUITLEN |
QUITS |
RB |
RDR |
| RDRL |
READ$EOF |
READADDR |
READBYTE |
READCHAR |
READCOM |
READCS |
READHEX |
| READRDR |
READTAPE |
REAL$EOF |
REALEOF |
RENAME |
RESIZED |
RETRY |
RL |
| ROL |
RT |
SA |
SAVECHAR |
SB |
SBASE |
SBLEN |
SBUFF |
| SCAN |
SCANDEST |
SCANEQL |
SCANPAR |
SCOM |
SDISK |
SEARCH |
SEARCHN |
| SEARFCB |
SELECT |
SET$DBLEN |
SET$DDISK |
SET$SDISK |
SETDMA |
SETUPDEST |
SETUPSOURCE |
| SHL |
SHR |
SIMPLECOM |
SIMPLECOPY |
SIZE$MEMORY |
SIZE$NBUF |
SOURCE |
SPECL |
| STARTS |
TAB |
TABS |
TCBP |
TIME |
TIMEOUT |
TRUE |
TYPE |
| UPPER |
UTRAN |
VERIF |
WHAT |
WRITEDEST |
XOFF |
XOFFSET |
ZEROP |
| ZEROSUP |

| Partially Matching Identifiers |
| *** NONE *** |
|